home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / GRFMBLIT.C < prev    next >
C/C++ Source or Header  |  1992-03-27  |  1KB  |  44 lines

  1. /**************************************************************************
  2.  * GRFMBLIT.C - grf_memblit() function.
  3.  *************************************************************************/
  4.  
  5. #include "gemfast.h"
  6. #include <osbind.h>
  7.  
  8. #ifndef NULL
  9.   #define NULL 0L
  10. #endif
  11.  
  12. void *grf_memblit(options, buffer, prect)
  13.     int      options;
  14.     void    *buffer;
  15.     void    *prect;
  16. {
  17.     long     mem_len;           /* total bytes needed for blit buffer */
  18.  
  19. /*----------------------------------------------------------------------*
  20.  * if buffer is NULL, get a buffer, and blit from screen to buffer, 
  21.  * else blit from provided buffer to screen.
  22.  *----------------------------------------------------------------------*/
  23.  
  24.     options &= ~(GRF_BFROMSCREEN|GRF_BTOSCREEN); /* bufptr sets direction */
  25.  
  26.     if (buffer == NULL) {
  27.         if (0 < (mem_len = grf_blit(options|GRF_BMEMCALC, NULL, prect))) {
  28.             if (NULL != (buffer = apl_malloc(mem_len))) {
  29.                 if (0 == grf_blit(options|GRF_BFROMSCREEN, buffer, prect)) {
  30.                     apl_free(buffer);
  31.                     buffer = NULL;
  32.                 }
  33.             }
  34.         }
  35.     } else {
  36.         grf_blit(options|GRF_BTOSCREEN, buffer, prect);
  37.         apl_free(buffer);
  38.     }
  39.  
  40.     return buffer;
  41. }
  42.  
  43.  
  44.